package com.enlorenz.common.geo.gts;

/**
 * 抽象的Gts搜索
 * @author Karma
 */
public abstract class AbstractGtsSearcher implements IGtsSearcher{

	@Override
	public String query(Double lon, Double lat) throws Exception {
		GtsResult gtsResult=queryImp(lon, lat);
		if(null == gtsResult){
			return "";
		}
		IGtsFormatter formatter=getFormatter(gtsResult);
		if(null == formatter){
			throw new RuntimeException("获取地址格式化类失败");
		}
		return formatter.format(gtsResult);
	}
	
	/**
	 * 查询实现类
	 * @param lon
	 * @param lat
	 * @return
	 * @throws Exception
	 */
	protected abstract GtsResult queryImp(Double lon, Double lat) throws Exception ;
	/**
	 * 获取格式化处理器
	 * @param gtsResult
	 * @return
	 */
	protected abstract IGtsFormatter getFormatter(GtsResult gtsResult);
}
